package com.qf.controller;


import com.qf.pojo.User;
import com.qf.pojo.UserVo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/Param")
public class ParamController {
    @RequestMapping("/test1")
    public String test1(HttpServletRequest request, Model model){
        String id = request.getParameter("id");
        String name = request.getParameter("name");


        System.out.println("===id===" + id);
        System.out.println("===name===" + name);

        model.addAttribute(id);
        model.addAttribute(name);
        return "hello";
    }

    @RequestMapping("/test2")
    public String test2(Integer id, String name, Model model) {
        System.out.println("========id=======" + id);
        System.out.println("========name=======" + name);

        //相当于request.setAttribute方法, 将数据放入请求域中带到页面中展示使用
        model.addAttribute("id", id);
        model.addAttribute("name", name);
        //指定返回数据并跳转到hello页面
        return "hello";
    }


    /**
     * 接收pojo实体类, 类型参数
     * 使用: 浏览器传入的参数过多, 可以将这些参数封装成实体类来进行接收
     * @return
     */
    @RequestMapping("/test3")
    public String test3(User user, Model model) {
        System.out.println("========user=======" + user);

        //相当于request.setAttribute方法, 将数据放入请求域中带到页面中展示使用
        model.addAttribute("user", user);

        //指定返回数据并跳转到hello页面
        return "hello";
    }

    /**
     * 接收数组类型参数:
     *         一般页面中如果表单使用post方式提交, 那么chekbox复选框提交的内容, 一般都是数组.
     *         那么要求name属性名称, 必须等于接收的变量名
     * @return
     */
    @RequestMapping("/test4")
    public String test4(String[] hobby, Model model) {
        System.out.println("========hobby=======" + hobby);

        //相当于request.setAttribute方法, 将数据放入请求域中带到页面中展示使用
        model.addAttribute("hobby", hobby);

        //指定返回数据并跳转到hello页面
        return "hello";
    }

    /**
     * 演示接收List类型参数, 一般行编辑需求的时候使用
     * @param model
     * @return
     */
    @RequestMapping("/test5")
    public String test5(UserVo vo, Model model) {
        System.out.println("========userList=======" + vo);


        //指定返回数据并跳转到hello页面
        return "hello";
    }


    @RequestMapping("/test6/{id}/{name}")
    public String test6(@PathVariable("id") Integer id,
                        @PathVariable("name") String name) {
        System.out.println("===============" + id +"========"+ name);
        return "hello";
    }

}
